Algorithms For The Traveling Salesman Problem